package showgo.modell.inszenierung;

import java.util.ArrayList;
import java.util.List;

import showgo.modell.stamm.Ensemble;
import showgo.modell.stueck.Stueck;

public class Inszenierung {

    private String inszBezeichnung;
    private Stueck stueck;
    private Ensemble ensemble;
    private List<Darstellerposten> darstellerPosten = new ArrayList<Darstellerposten>();
    private List<Nichtdarstellerposten> nichtDarPosten = new ArrayList<Nichtdarstellerposten>();

    public Inszenierung(String inszBezeichnung, Stueck stueck,
	    Ensemble ensemble, List<Darstellerposten> darstellerPosten,
	    List<Nichtdarstellerposten> nichtDarPosten) {
	super();
	this.inszBezeichnung = inszBezeichnung;
	this.stueck = stueck;
	this.ensemble = ensemble;
	this.darstellerPosten = darstellerPosten;
	this.nichtDarPosten = nichtDarPosten;
    }

    public String getInszBezeichnung() {
	return inszBezeichnung;
    }

    public void setInszBezeichnung(String inszBezeichnung) {
	this.inszBezeichnung = inszBezeichnung;
    }

    public Stueck getStueck() {
	return stueck;
    }

    public void setStueck(Stueck stueck) {
	this.stueck = stueck;
    }

    public Ensemble getEnsemble() {
	return ensemble;
    }

    public void setEnsemble(Ensemble ensemble) {
	this.ensemble = ensemble;
    }

    public List<Darstellerposten> getDarstellerPosten() {
	return darstellerPosten;
    }

    public void setDarstellerPosten(List<Darstellerposten> darstellerPosten) {
	this.darstellerPosten = darstellerPosten;
    }

    public List<Nichtdarstellerposten> getNichtDarPosten() {
	return nichtDarPosten;
    }

    public void setNichtDarPosten(List<Nichtdarstellerposten> nichtDarPosten) {
	this.nichtDarPosten = nichtDarPosten;
    }

    public Inszenierung tiefeKopie() {
	String neueBez = new String(this.inszBezeichnung);
	Stueck neuesStueck = this.stueck.tiefeKopie();
	Ensemble ensemble = this.ensemble.tiefeKopie();
	List<Darstellerposten> darstellerposten = new ArrayList<Darstellerposten>();
	for (Darstellerposten d : this.darstellerPosten) {
	    darstellerposten.add(d.tiefeKopie());
	}
	List<Nichtdarstellerposten> nichtDarsteller = new ArrayList<Nichtdarstellerposten>();
	for (Nichtdarstellerposten n : this.nichtDarPosten) {
	    nichtDarsteller.add(n.tiefeKopie());
	}

	return new Inszenierung(neueBez, neuesStueck, ensemble,
		darstellerposten, nichtDarsteller);
    }

}
